package com.lulin.mall.seckill.schedule;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 * 1、通过@EnableScheduling 在类上开启定时任务
 * 2、通过@Scheduled在方法上，具体开启一个定时任务，通过cron表达式来配置定时的规则。
 *
 * @author lulin
 * @date 2023/1/4 9:20
 */
@EnableAsync //开启异步任务的功能
@EnableScheduling //开启定时任务
@Slf4j
//@Component
public class ScheduleCaseDemo {
    /**
     * 默认请求下，定时任务是同步的，我们需要它异步的处理。
     * 1、可以把需要定时执行的任务交给异步处理器来实现；
     * 2、可以把需要执行的方法，异步执行。
     *      1）通过@EnableAsync 在类上 开启异步任务的功能
     *      2）@Async标识要异步执行的方法；
     */
    @Async
   // @Scheduled(cron = "* * * * * *") //每秒执行1次
    public void schedule() {
        log.info("定时任务");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
